﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ComunesMGI.DataTypes;
using ClienteWinMGI.Logica;
using ComunesMGI.Mensajes;

namespace ClienteWinMGI.Presentacion
{
    public partial class ManejoUsuarios : Form
    {
        private List<DataUsuario> _listaUsuarios;
        public ManejoUsuarios()
        {
            InitializeComponent();
            CargarTablaUsuarios();
            
        }

       private void CargarTablaUsuarios()
       {
           try
           {
               DataTable tabla = new DataTable("tablaUsuarios");
               tabla.Columns.Add("Nombre", typeof(string));
               _listaUsuarios = LogicaFactory.getInstance().getIUsuarios().GetUsuarios();
               //agrego las filas
               foreach (DataUsuario du in _listaUsuarios)
               {
                   DataRow dataR = tabla.NewRow();
                   dataR[0] = du.Nombre;
                   tabla.Rows.Add(dataR);
                
               }
               grillaUsuarios.DataSource = tabla;
           }
           catch (Exception ex)
           {
               Error err = new Error("Error", "", ex.Message);
               err.ShowDialog();
           }

       }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            AltaUsuario au = new AltaUsuario();
            au.ShowDialog();
            CargarTablaUsuarios();
            
        }

        private int ObtenerIndiceUsuarioSeleccionado()
        {
            DataGridViewSelectedRowCollection col = grillaUsuarios.SelectedRows;
            bool salir = false;
            int i = 0;
            while (!salir && i < grillaUsuarios.RowCount)
            {
                DataGridViewRow fila = grillaUsuarios.Rows[i];
                if (col.Contains(fila))
                {
                    salir = true;

                }
                else
                {
                    i++;
                }
            }
            if (salir)
                return i;
            else
                return -1;
        }
        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (grillaUsuarios.DataSource!=null)
            {
                int selec= ObtenerIndiceUsuarioSeleccionado();
                if (selec>=0)
                {
                    //se selecciono un usuario
                    DataUsuario du= _listaUsuarios.ElementAt(selec);
                    ModificarUsuario modificarU = new ModificarUsuario(du);
                    modificarU.ShowDialog();
                    CargarTablaUsuarios();
                
                }
                else
                {
                    Error err= new Error("Error","Seleccione un usuario","Para poder modificar los datos de un usuario debe seleccionar previamente uno");
                    err.ShowDialog();
                }
            }
            else
            {
                Error err= new Error("Error","No hay usuarios","No existen usuarios en el sistema");
                err.ShowDialog();
            
            }


        }

        private void btnBorrar_Click(object sender, EventArgs e)
        {

            if (grillaUsuarios.DataSource != null)
            {
                int selec = ObtenerIndiceUsuarioSeleccionado();
                if (selec >= 0)
                {
                    try
                    {
                        //se selecciono un usuario
                        DataUsuario du = _listaUsuarios.ElementAt(selec);
                        LogicaFactory.getInstance().getIUsuarios().BajaUsuario(du.Codigo);
                        Notificacion notif = new Notificacion("Baja Exitosa", "", "Se ha dado de baja con exito el cliente");
                        notif.ShowDialog();
                        CargarTablaUsuarios();
                    }
                    catch (Exception ex)
                    { 
                        Error err = new Error("Error", "", ex.Message);
                        err.ShowDialog();
                    }

                }
                else
                {
                    Error err = new Error("Error", "Seleccione un usuario", "Para poder borrar un usuario debe seleccionar previamente uno");
                    err.ShowDialog();
                }
            }
            else
            {
                Error err = new Error("Error", "No hay usuarios", "No existen usuarios en el sistema");
                err.ShowDialog();

            }
           
        }
    }
}
